import tkinter as tk
from tkinter.messagebox import Message, askquestion  # 正确导入askquestion

# 移除多余的无关导入（pyexpat.errors与当前功能无关）

def main():
    root = tk.Tk()
    root.title("主窗口")
    root.geometry("300x300")  # 增大窗口高度，避免按钮重叠

    def open_dialog():
        dialog = Message(
            master=root,
            message="操作成功！",
            detail="文件已保存到「文档/备份」文件夹",
            type='okcancel',  # 显示OK和Cancel两个按钮
            icon="info",
            title="成功提示"
        )
        result = dialog.show()
        print(f"用户点击了：{result}")  # 点击OK返回"ok"，Cancel返回"cancel"

    # 修正test函数：让askquestion使用传入的参数
    def test(title,message,**kwargs):
        # 直接传递关键字参数给askquestion，无需硬编码None
        return askquestion(title,message,** kwargs)

    # 主窗口添加按钮
    btn = tk.Button(root, text="显示操作成功提示", command=open_dialog)
    btn.pack(pady=20)  # 调整间距

    # 修正btn2的lambda语法和参数传递：
    # 1. lambda需要加冒号: 2. 用字典传递关键字参数（title和message）
    btn2 = tk.Button(
        root,
        text="显示询问对话框",

        #本身只能command=方法 不带参数   需要有参数 就得用lambda:方法【使用test()或者直接askquestion()】（参数）
        command=lambda: test(title="Spam", message="Try again?",**{'icon':'warning'})  # 正确传递参数
    )
    btn3 = tk.Button(
        root,
        text="显示询问框",
        command=lambda: (
            # 1. 调用 askquestion，获取返回值（"yes" 或 "no"）
            lambda result: print(f"用户选择：{result}")  # 2. 处理返回值（这里是打印）
        )(askquestion(title="Spam", message="Try again?", **{'icon': 'error'}))
    )
    btn2.pack(pady=20)  # 调整间距，避免重叠
    btn3.pack(pady=20)
    root.mainloop()

if __name__ == "__main__":
    main()
